package cloud.daodao.storm.common.file.error;

import cloud.daodao.storm.common.constant.AppConstant;
import cloud.daodao.storm.common.constant.ServiceCode;
import cloud.daodao.storm.common.error.ErrorEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @author DaoDao
 */
@Getter
@AllArgsConstructor
public enum FileError implements ErrorEnum {

    ERROR(code("001"), "file 服务异常"),

    FILE_NOT_EXIST(code("002"), "文件不存在"),
    FILE_READ_WRITE_ERROR(code("003"), "文件读写异常"),
    FILE_CODE_ERROR(code("004"), "文件 code 错误"),
    FILE_HASH_ENCRYPT_ERROR(code("005"), "文件 hash 加密异常"),
    FILE_SIGN_VERIFY_ERROR(code("006"), "文件签名验证异常"),
    FILE_HASH_DECRYPT_ERROR(code("007"), "文件 hash 解密异常"),
    UNSUPPORTED_SECURITY_ALGORITHM(code("008"), "暂未支持的安全算法"),
    FILE_HASH_VERIFY_ERROR(code("009"), "文件 hash 验证错误"),
    REQUEST_HEADER_REQUIRED_X_CLIENT(code("010"), "http header 中的 " + AppConstant.X_CLIENT + " 不可为 null"),
    FILE_SIGN_ERROR(code("011"), "文件签名错误"),
    RSA_SECRET_KEY_NOT_EXIST(code("014"), "RSA 密钥不存在"),
    CFCA_CERT_NOT_EXIST(code("015"), "CXFCA 证书不存在"),
    THE_CURRENT_TIME_IS_NOT_WITHIN_THE_VALIDITY_PERIOD_OF_THE_CERT(code("016"), "证书有效期错误"),
    FIND_CLIENT_CERT_ERROR(code("019"), "请先配置证书"),
    X_TIME_FORMAT_ERROR(code("020"), "https header 中的 " + AppConstant.X_TIME + " 格式错误"),
    X_TIME_EXPIRED(code("021"), "https header 中的 " + AppConstant.X_TIME + " 已过期"),
    X_TRACE_DUPLICATE(code("022"), "http header 中的 " + AppConstant.X_TRACE + " 重复"),
    REQUIRED_X_TRACE(code("023"), "http header 中的 " + AppConstant.X_TRACE + " 不可为 null"),
    REQUIRED_X_TIME(code("024"), "http header 中的 " + AppConstant.X_TIME + " 不可为 null"),
    INVOKE_FILE_EXCEPTION(code("025"), "调用 file 服务异常"),
    FILE_OPTION_EXPIRE_ERROR(code("026"), "文件有效期错误"),
    REQUEST_BODY_REQUIRED_HASH(code("027"), "请求 body 中的 hash 不可为空"),
    REQUEST_HEADER_REQUIRED_X_HASH(code("028"), "http header 中的 " + AppConstant.X_HASH + " 不可为 null"),
    REQUEST_HEADER_REQUIRED_X_SIGN(code("029"), "http header 中的 " + AppConstant.X_SIGN + " 不可为 null"),
    INVOKE_SECURITY_ERROR(code("030"), "调用 security 服务异常"),

    ;

    /**
     * 错误编码
     */
    public final String code;

    /**
     * 错误信息
     */
    public final String message;

    private static String code(String code) {
        return ServiceCode.FILE + code;
    }

}
